The present invention relates in general to bus interfaces, and in particular to methods and systems for measuring health of a high-speed interface link.
Modern personal computer systems generally include a number of different components, such as processors, memory, data storage devices using magnetic or optical media, user input devices (e.g., keyboards and mice), output devices (e.g., monitors and printers), graphics processors, and so on. All of these components communicate with each other via various buses implemented on a motherboard of the system. Numerous bus protocols are used, including PCI (Peripheral Component Interconnect), PCI-E (PCI Express), AGP (Accelerated Graphics Port), HyperTransport, and so on. Each bus protocol specifies the physical and electrical characteristics of the connections, as well as the format for transferring information via the bus. In many instances, the buses of a personal computer system are segmented, with different segments sometimes using different bus protocols, and the system includes bridge chips that interconnect different segments.
Buses enable system components to exchange data and control signals. For instance, when a graphics processor needs to read texture or vertex data (or other data) stored in system memory, the graphics processor requests the data via a bus and receives a response via the same bus. Where many devices are making requests for data (e.g., from system memory) or where one device is making large or frequent requests, a bus or bus segment can become saturated, leading to decreased performance. In fact, modern graphics processors are often bandwidth-limited; that is, the graphics processor's performance is limited by the ability of the bus (or buses) to deliver needed data to the graphics processor.
To increase the rate at which data can be supplied, computer game enthusiasts frequently increase the speed of a reference clock used to control the transmitting and receiving of data via the bus, a practice referred to as “overclocking.” When the speed of a reference clock is increased beyond a certain threshold, however, the efficiency of data exchange decreases and more errors occur. Thus, it is possible to overclock too far and degrade rather than enhance system performance.
More recently, “unidirectional” buses have become popular. An example is PCI Express (PCI-E), which provides physically separate paths for transmitting and receiving data packets. In a unidirectional bus, responses sent by a remote device onto the receiving path generally do not create backpressure on the transmission path, and so backpressure is not a reliable indicator of when overclocking begins to degrade system performance. In addition, when packet errors occur, the packets that were not correctly received are resent, resulting in increased traffic on the bus without actually increasing throughput.
It would therefore be desirable to provide methods and systems to facilitate measuring health of a high-speed interface link.